package avicit.bdp.dgs.mdm.dao;

import avicit.bdp.common.base.BaseDAO;
import avicit.bdp.dgs.mdm.dto.CodeDTO;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @金航数码科技有限责任公司
 * @作者：developer
 * @邮箱：developer@avic-digital.com
 * @创建时间： 2023-12-06
 * @类说明：CodeDAO
 * @修改记录：
 * @注意事项：
 * @主要功能：编码中字段编码DAO
 */
@Repository
public interface CodeDAO extends BaseDAO<CodeDTO> {
    /**
     * 分页查询-根据条件查询编码列表
     *
     * @param tableId
     * @return
     */
    Page<CodeDTO> queryCodeByCond(@Param("tableId") String tableId);

    /**
     * 根据条件获取编码列表
     *
     * @param tableId
     * @return
     */
    List<CodeDTO> getCodeListByCond(@Param("tableId") String tableId);

    /**
     * 删除/批量删除编码
     *
     * @param idList   编码ID列表
     * @param columnId 字段ID
     * @param tableId  模型ID
     * @return
     */
    int deleteCodeByCond(@Param("idList") List<String> idList, @Param("columnId") String columnId, @Param("tableId") String tableId);

    /**
     * 判断字段是否重复设置编码
     *
     * @param codeId   编码ID
     * @param columnId 字段ID
     * @param ruleId   规则ID
     * @return
     */
    long isDuplicateCode(@Param("codeId") String codeId, @Param("columnId") String columnId, @Param("ruleId") String ruleId);

    /**
     * 获取编码详情
     *
     * @param codeId
     * @return
     */
    CodeDTO getCodeDetail(@Param("codeId") String codeId);
}
